﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BusinessLogicLayer;
using BusinessEntities;
using SQL_Provider;

namespace QL_HoSoBA
{
    public partial class frmTaiKhoan : Form
    {
        public frmTaiKhoan()
        {
            InitializeComponent();
        }

        private static TaiKhoan_Manager taikhoan = new TaiKhoan_Manager();
        public static string taikhoan1 = "", matkhau1 = "", chucvu1 = "", manv1 = "", tennv1 = "", phongkham1 = "";
        MaHoa mh = new MaHoa();
        NhanVien_Manager nv_manager = new NhanVien_Manager();
        NhanVien_Info nv_info = new NhanVien_Info();
        #region Xử lí các hàm chức năng
        private void frmTaiKhoan_Load(object sender, EventArgs e)
        {
            LoadData();
            HienADMin();
            if (chucvu1 == "")
            {
                btnCapNhatCauHoi.Enabled = false;
                btnThayDoi.Enabled = false;
                cbbCauHoiBiMat.Enabled = false;
                txtMatKhauCu.Enabled = false;
                txtMatKhauMoi.Enabled = false;
                txtNhapLai.Enabled = false;
            }
        }

      

        private void HienADMin()
        {
            if (chucvu1 == "ADmin")
            {
                cbbDSTK.Enabled = true;
                txtTaiKhoan.Enabled = true;
                txtMatKhau.Enabled = true;
                txtHoTenNV.Enabled = true;
                txtChucVu.Enabled = true;
                btnTiepNhan.Enabled = true;
                btnMacDinh.Enabled = true;
            }
            else
            {
                cbbDSTK.Enabled = false;
                txtTaiKhoan.Enabled = false;
                txtMatKhau.Enabled = false;
                txtHoTenNV.Enabled = false;
                txtChucVu.Enabled = false;
                btnTiepNhan.Enabled = false;
                btnMacDinh.Enabled = false;
                btnThemNV.Enabled = false;
                btnXoa.Enabled = false;
                btnDanhSachTK.Enabled = false;
                
                

            }
        }

        private void AnHienChucNang()
        {
            if (cbbCauHoiBiMat.Text.Trim() != "" && txtDapAn.Text.Trim() != "")
            {
                btnThayDoi.Enabled = false;
            }
            else
            {
                btnThayDoi.Enabled = true;
            }
        }

        private void LoadData()
        {
            cbbDSTK.DataSource = nv_manager.NV_SelectALL();
            cbbDSTK.DisplayMember = "MaNV";
            cbbDSTK.ValueMember = "MaNV";
            taikhoan1 = frmHeThong.taikhoan;
            chucvu1 = frmHeThong.chucvu;
          
        }
        public void ShowForm(int index)
        {
            switch (index)
            {
                case 0:
                    tabControlTaiKhoan.SelectTab(index);
                    tabControlTaiKhoan.Show();
                   
                    break;
                case 1:
                    tabControlTaiKhoan.SelectTab(index);
                    tabControlTaiKhoan.Show();
                   
                    break;
                case 2:
                    tabControlTaiKhoan.SelectTab(index);
                    tabControlTaiKhoan.Show();
                  
                    break;
            }
        }

        private void btnTiepNhan_Click(object sender, EventArgs e)
        {
          
        }

        private void btnCapNhatCauHoi_Click(object sender, EventArgs e)
        {
            try
            {
                if (cbbCauHoiBiMat.Text.Trim() != "" && txtDapAn.Text.Trim() != "")
                {
                    if (MessageBox.Show("Bạn có muốn cập nhật không ?", "???", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        int kq = taikhoan.TaiKhoanDN_CapNhat_CauHoi(new TaiKhoan_Info(taikhoan1, cbbCauHoiBiMat.Text, txtDapAn.Text));
                        if (kq > 0)
                        {
                            MessageBox.Show("Cập nhật thành công !", "Infomation", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                        else
                            MessageBox.Show("Cập nhật thất bại !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                        return;
                }
                else
                    MessageBox.Show("Dữ liệu nhập không hợp lệ !", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            catch { }
        }

        private void cbbCauHoiBiMat_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbbCauHoiBiMat.Text.Trim() != "")
                btnCapNhatCauHoi.Enabled = true;
            else
                btnCapNhatCauHoi.Enabled = false;
        }

        private void txtMatKhauCu_TextChanged(object sender, EventArgs e)
        {
            if (txtMatKhauCu.Text.Trim() == "")
            {
                btnThayDoi.Enabled = false;
                btnHienNhap.Enabled = false;
                btnAnNhap.Enabled = false;
                errorProvider1.SetError(txtMatKhauCu, "Bạn chưa nhập dữ liệu !");
            }
            else
            {
                btnThayDoi.Enabled = true;
                btnAnNhap.Enabled = true;
                btnHienNhap.Enabled = true;
                errorProvider1.Clear();
            }
        }

        private bool KiemTraNhap()
        {
            bool kq = true;
            if (txtMatKhauCu.Text.Trim() == "" || txtMatKhauMoi.Text.Trim() == "" || txtNhapLai.Text.Trim() == "")
            {
                if (txtMatKhauCu.Text.Trim() == "")
                    errorProvider1.SetError(txtMatKhauCu, "Bạn chưa nhập dữ liệu !");
                if (txtMatKhauMoi.Text.Trim() == "")
                    errorProvider2.SetError(txtMatKhauMoi, "Bạn chưa nhập dữ liệu !");
                if (txtNhapLai.Text.Trim() == "")
                    errorProvider3.SetError(txtNhapLai, "Bạn chưa nhập dữ liệu !");
                kq = false;
            }
            else
            {
                errorProvider1.Clear();
                errorProvider2.Clear();
                errorProvider3.Clear();
                kq = true;
            }
            return kq;
        }

        private bool KiemTraMatKhauNhap()
        {
            if (txtMatKhauMoi.Text.Trim() == txtNhapLai.Text.Trim())
                return true;
            return false;
        }

        private void btnThayDoi_Click(object sender, EventArgs e)
        {
            try
            {
                if (KiemTraNhap())
                {
                    if (KiemTraMatKhauNhap())
                    {
                        if (MessageBox.Show("Bạn có muốn thay đổi mật khẩu tài khoản hay không ?", "???", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            int kq = taikhoan.TaiKhoanDN_ThayDoiMK(taikhoan1, txtMatKhauCu.Text, txtMatKhauMoi.Text);
                            if (kq > 0)
                            {
                                MessageBox.Show("Thay đổi mật khẩu thành công !", "Infomation", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                LoadData();
                                return;
                            }
                            else
                                MessageBox.Show("Mật khẩu bạn nhập không đúng, thay đổi thất bại !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else
                            return;
                    }
                    else
                        MessageBox.Show("Mật khẩu thay đổi không trùng nhau !", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                    MessageBox.Show("Dữ liệu nhập không hợp lệ !", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }
            catch { }
        }

        private void txtMatKhauMoi_TextChanged(object sender, EventArgs e)
        {
            if (txtMatKhauMoi.Text.Trim() == "")
            {
                errorProvider2.SetError(txtMatKhauMoi, "Bạn chưa nhập dữ liệu !");
            }
            else
            {
                errorProvider2.Clear();
            }
        }

        private void txtNhapLai_TextChanged(object sender, EventArgs e)
        {
            if (txtNhapLai.Text.Trim() == "")
            {
                errorProvider3.SetError(txtNhapLai, "Bạn chưa nhập dữ liệu !");
            }
            else
            {
                errorProvider3.Clear();
            }
        }

        private void btnAnNhap_Click(object sender, EventArgs e)
        {
            txtMatKhauCu.UseSystemPasswordChar = false;
            txtMatKhauMoi.UseSystemPasswordChar = false;
            txtNhapLai.UseSystemPasswordChar = false;
        }

        private void btnHienNhap_Click(object sender, EventArgs e)
        {
            txtMatKhauCu.UseSystemPasswordChar = true;
            txtMatKhauMoi.UseSystemPasswordChar = true;
            txtNhapLai.UseSystemPasswordChar = true;
        }

        private void btnNhapMoi_Click(object sender, EventArgs e)
        {
            txtMatKhauCu.Clear();
            txtMatKhauMoi.Clear();
            txtNhapLai.Clear();
            errorProvider1.Clear();
            errorProvider2.Clear();
            errorProvider3.Clear();
            
        }

        private void btnLayLaiMK_Click(object sender, EventArgs e)
        {
            try
            {
                int kq = taikhoan.TaiKhoanDN_UpDateMatKhau(txtTaiKhoan1.Text, mh.MD5Format(txtMatKhaudoi.Text), mh.MD5Format(txtNhapLaiMK.Text));
                if(kq!=0)
                {
                    MessageBox.Show("Đổi thành công!!");
                    frmLogin frm=new frmLogin();
                    //frm.Show();
                    this.Close();
                   
                }
                else
                {
                   if( MessageBox.Show("Mật Khẩu nhập vào không trùng!","Nhập lại",MessageBoxButtons.YesNo)==DialogResult.OK)
                   {
                       txtMatKhaudoi.Text="";
                       txtNhapLaiMK.Text="";
                   }
                }
              
            }
            catch
            { }
        }


        private void btnNhapMoi1_Click(object sender, EventArgs e)
        {
          
        }
        #endregion

      

        private void btnMacDinh_Click_1(object sender, EventArgs e)
        {
            txtTaiKhoan.Text = "";
            txtMatKhau.Text = "";
            txtChucVu.Text = "";
            txtHoTenNV.Text = "";
            cbbDSTK.Text = "";
        }


        private void btnTiepNhan_Click_1(object sender, EventArgs e)
        {
            try
            {
                if (txtTaiKhoan.Text.Trim() != "")
                {
                    if (MessageBox.Show("Bạn có muốn thêm không ?", "???", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        int kq = taikhoan.TaiKhoanDN_Them(new TaiKhoan_Info(txtTaiKhoan.Text,mh.MD5Format(txtMatKhau.Text), txtChucVu.Text,cbbDSTK.Text, txtHoTenNV.Text));
                        if (kq >= 0)
                        {
                            MessageBox.Show("Thêm thành công !", "Infomation", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            btnDanhSachTK_Click(sender, e);
                        }
                    }
                    else
                        return;
                }
                else
                    MessageBox.Show("Dữ liệu nhập không hợp lệ !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch
            { }
        }

        private void btnDanhSachTK_Click(object sender, EventArgs e)
        {
            this.dgvdanhsachtk.DataSource = taikhoan.TaiKhoanDN_All();
        }

        private void btnThemNV_Click_1(object sender, EventArgs e)
        {
            NhanVien nv = new NhanVien();
            if (nv.ShowDialog() == DialogResult.Yes)
            {
                nv.Show();
            }
        }

        private void cbbDSTK_SelectedIndexChanged(object sender, EventArgs e)
        {

            try
            {
                string ChonMa = this.cbbDSTK.SelectedValue.ToString();
                nv_manager.NhanVien_TimTheoMaNV(ChonMa);
                foreach (DataRow row in nv_manager.NhanVien_TimTheoMaNV(ChonMa).Rows)
                {
                    txtHoTenNV.Text = row[1].ToString();
                    txtChucVu.Text = row[6].ToString();
                }
            }
            catch
            {
            }
           
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {

        }

        private void btnLayCauHoiBM_Click(object sender, EventArgs e)
        {
            string CauHoi = null;
            try
            {
                txtCauHoi.Clear();
                CauHoi = taikhoan.TaiKhoanDN_LayCauHoiBiMat(txtTaiKhoan1.Text);
                if (CauHoi !="")
                {
                    txtCauHoi.Text = CauHoi;
                }
                else
                {
                    MessageBox.Show("Tài Khoản của bạn chưa cập nhật câu hỏi bí mật");
                }
            }
            catch
            {
            }
        }

        private void btnKiemTra_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable kq = taikhoan.TaiKhoanDN_LayMatKhau(txtTaiKhoan1.Text, txtCauHoi.Text, txtTraLoi1.Text);
                if (kq.Rows.Count != 0)
                {
                    if (MessageBox.Show("Câu trả lời đúng!!") == DialogResult.OK)
                    {
                        txtMatKhaudoi.ReadOnly = false;
                        txtNhapLaiMK.ReadOnly = false;
                    }

                }
                else
                {
                    if (MessageBox.Show("Câu trả lời của bạn đã sai", "Nhập Lại", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
                    {
                        txtTraLoi1.Text = "";
                        
                    }

                }
            }
            catch
            {
            }
        }
    }
}
